#ifndef __CHANNEL_HPP__
#define __CHANNEL_HPP__
#include <iostream>
#include <string>
#include <unistd.h>

//先描述
class Channel
{
public:
    Channel(int wfd, pid_t who) : _wfd(wfd), _who(who)
    {
        // Channel-3-1234
        _name = "Channel-" + std::to_string(wfd) + "-" + std::to_string(who);
    }

    std::string name()
    {
        return _name;
    }

    void send(int cmd)
    {
        ::write(_wfd, &cmd, sizeof(cmd));
    }

    void close()
    {
        ::close(_wfd);
    }

    pid_t Id()
    {
        return _who;
    }

    int Wfd()
    {
        return _wfd;
    }

    ~Channel()
    {

    }
private:
    int _wfd; //写端文件描述符，是用于向目标进程发送数据的底层句柄
    std::string _name;//通道的名称标识,用于唯一标识一个通道，方便调试、日志输出或管理多个通道时区分不同实例
    pid_t _who;//表示当前通道对应的目标进程的 PID（进程号），即数据要发送到的那个进程的唯一标识 
              //明确通道的通信对象，用于在进程池中管理 “哪个通道对应哪个工作进程”，避免通信混乱
};

#endif